`timescale 1ns/1ps

module tb_prbs;

    reg clk;
    reg rst;

    wire [8:0] prbs_gen_out;        // PRBS Generator 输出（并行9位）
    wire prbs_detector_out;         // PRBS Detector 输出（预测的bit）
    wire prbs_input_bit;            // Generator的LSB，作为Detector输入

    // 取发生器输出的最低位作为每一位输入
    assign prbs_input_bit = prbs_gen_out[0];

    // 产生时钟信号：10ns周期
    always #5 clk = ~clk;

    // 实例化 PRBS 生成器
    PRBS_Generator uut_gen (
        .clk(clk),
        .rst(rst),
        .prbs_out(prbs_gen_out)
    );

    // 实例化 PRBS 检测器
    PRBS_Detector uut_det (
        .clk(clk),
        .rst(rst),
        .prbs_datain(prbs_input_bit),
        .prbs_out(prbs_detector_out)
    );

    // 仿真初始化过程
    initial begin
        // 初始状态
        clk = 0;
        rst = 1;
        #20;
        rst = 0;

        // 运行足够长时间以观察结果
        #1000;

        // 可选结束
        $finish;
    end

endmodule
